perm filename INTFAC.FAI[SYS,HE]4 blob
sn#048164 filedate 1973-06-08 generic text, type T, neo UTF8
00100 TITLE INTFAC
00200 INTERNAL DOIT,ARMPOS,ARM.JOINT,PACK
00300 INTERNAL HANDFN,ARMFN,ARMPROCEED
00400 EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
00500 EXTERNAL ARM.WAIT,FELT,STOP.ON,ARM.TO
00600 EXTERNAL ARM.MESSAGE
00700
00800 P←17
00900 MASTER←←16660
01000 RELOC←←40
01100 TOUCH←←10
01200 HOLD←←20
01300
01400 ARM.JOINT:MOVEI
01500 SKIPA
01600 ARMPOS: MOVEI 1
01700 HRLI MASTER
01800 MOVEM EXE
01900 CALLI 1,30
02000 MOVEM 1,SEGJOB
02100 JSR ISSERV
02200 SEN1: SEND REQU
02300 JRST[ MOVEI 1,2
02400 CALLI 1,31
02500 JRST SEN1]
02600 WRCV EXE
02700 MOVE 1,ARM.VE
02800 MOVEI 2,6(1)
02900 HRLI 1,THETA
03000 BLT 1,(2)
03100 MOVE 1,STATUS
03150 MOVEM 1,ARM.STATUS
03200 RETN: POPJ 17,
03300
03400 REQU: SIXBIT/[ARM]/
03500 EXE
03600
00100 ; THIS IS THE 32 WORD MAIL MESSAGE
00200
00300 EXE: XWD MASTER,0 ;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
00400 ;0 READ IN OCTAL
00500 ;1 READ IN DECIMAL
00600 ;2 EXECUTE FILE
00700 ;3 EXECUTE FUNCTION
00800 FILE: 0
00900 PPPN: 0
01000 BAND: 0
01100 SEGJOB: 0
01200 NAME: 0
01300 STATUS: 0
01400 SEGMENT:0
01500 NERVES: 0
01600 ETOR: 0
01700 THETA: 0
01800 ARGS: BLOCK =21
01900
00100 PACK: ;(INTEGER PTR,TIME;REFERENCE REAL SOLN);
00200 MOVE 10,-3(P)
00300 MOVE 1,-2(P)
00400 MOVEM 1,(10) ;TIME
00500 HRLZ 5,-1(P)
00600 BLT 5,4 ;PICK UP A0-A4
00700 MOVM 6,4 ;WHERE THE LARGEST WILL END UP
00800 MOVEI 5,3
00900 L1: MOVM 7,(5)
01000 CAMGE 6,7
01100 MOVE 6,7
01200 SOJGE 5,L1
01300 TDZ 6,[XWD 777,777777] ;THE LARGEST IS NOW IN 6
01400 ADD 6,[XWD 12000,0] ;THE EXPONENT TO PUT FRACTION AND SIGN INTO RT. HALF
01500 HLLM 6,-1(10)
01600 UFA 6,4
01700 HRLM 7,-3(10)
01800 UFA 6,3
01900 HRRM 7,-3(10)
02000 UFA 6,2
02100 HRLM 7,-2(10)
02200 UFA 6,1
02300 HRRM 7,-2(10)
02400 UFA 6,0
02500 HRRM 7,-1(10)
02600 SUB P,[XWD 4,4]
02700 JRST @4(P)
02800
00100 ISSERV: 0
00200 SEE: MOVE 1,[SIXBIT/[ARM]/]
00300 CALLI 1,400043
00400 JRST[ CAIE 1,1
00500 JRST[ OUTSTR[ASCIZ/THERE ARE TOO MANY SERVOS ALREADY
00600 PLEASE KILL THEM ALL BUT ONE AND TYPE RET
00700 /]
00800 INCHWL
00900 INCHWL
01000 JRST SEE]
01100 PTYGET 10
01200 JRST[ OUTSTR[ASCIZ/NO PTYS AVAILABLE
01300 /]
01400 CALLI 12]
01500 HRLI 10,0
01600 GJ: MOVEI 11,[ASCIZ/L
01700 /]
01800 PTWRS7 10
01900 WH: PTRD1W 10
02000 CAIE 11,"#"
02050 JRST[ CAIE 11,"?"
02100 JRST WH
02150 OUTSTR[ASCIZ\NO JOB FOR SERVO
02175 TYPE C/R TO TRY AGAIN
02185 \]
02195 INCHWL
02197 INCHWL
02198 JRST GJ]
02200 MOVEI 11,[ASCIZ/SYS,HE
02300 /]
02400 PTWRS7 10
02500 WCC: PTRD1W 10
02600 CAIE 11,"↑"
02700 JRST WCC
02800 MOVEI 11,[ASCIZ/RUN ARM
02900 /]
03000 PTWRS7 10
03100 WCC2: PTRD1W 10
03200 CAIE 11,"!"
03300 JRST WCC2
03400 JRST @ISSERV]
03500 GOTONE: JRST @ISSERV
03600
00100 DOIT: MOVE 1,-1(17)
00200 MOVEM 1,FILE
00300 MOVEM 1,ARM.WAIT
00400 MOVE 1,-2(17)
00500 HRRZM 1,BAND
00600 MOVEI 2
00700 SETZ 1,
00800 CALLI 1,24
00900 MOVEM 1,PPPN
01000 JSR ISSERV
01100 PUSHJ P,ACT
01200 RETM: SUB 17,[XWD 3,3]
01300 JRST @3(17)
01400
01500 ARMFN: MOVEI 3+HOLD+RELOC
01600 HRL 1,ARM.ME
01700 HRRI 1,ARGS
01800 BLT 1,ARGS+24
01900 MOVE 1,-1(17)
02000 DPB 1,[POINT 9,0,26]
02100 PUSHJ P,ACT
02200 SUB P,[XWD 2,2]
02300 JRST @2(P)
02400
02500 HANDFN: MOVEI 3+HOLD
02600 MOVE 1,ARM.ME
02700 MOVE 1,(1)
02800 MOVEM 1,ARGS
02900 JRST ACT
03000
03100 ARMPRO: MOVE 1,-1(P)
03200 MOVEM 1,ARGS
03300 MOVEI 3
03400 PUSHJ P,ACT
03500 SUB P,[XWD 2,2]
03600 JRST @2(P)
03700
00100 ACT: HRLI MASTER
00200 SETZM ARM.STATUS
00300 SKIPE STOP.ON
00400 TRO TOUCH
00500 MOVEM EXE
00600 MOVE 1,ARM.WAIT
00700 MOVEM 1,ARM.MOTION
00800 SETZM ARM.WAIT
00900 SEND REQU
01000 JRST[ MOVEI 1,2
01100 CALLI 1,31
01200 JRST .-1]
01300 WRCV EXE
01400 MOVE 1,ARM.VE
01500 MOVEI 2,6(1)
01600 HRLI 1,THETA
01700 BLT 1,(2)
01800 MOVE 1,ARM.TO
01900 MOVEI 2,5(1)
02000 HRLI 1,ARGS+10
02100 BLT 1,(2)
02200 MOVE 1,ARM.MOTION
02300 MOVEM 1,ARM.WAIT
02400 SETZM ARM.MOTION
02500 MOVE 1,STATUS
02600 MOVEM 1,ARM.STATUS
02700 POPJ P,
02800
02900 END